package model.extras;

public class FrontCoding {

	  
	private int anteriores;
    private int nuevos;
    private String termino;
 
    // constructor
    public FrontCoding(){
    	this.termino= new String("");
    }

    
    // toma dos string  va comparando los elementos. Cuando son distintos, 
    //corta el recorrido y copia los elementos distintos en un string nuevo
    //la catidad de elementos iguales y distintos los guarda en dos int distintos
    public void compacto(String termino1, String termino2)
    {
    	
    	boolean iguales = true;
        int i=0;
               
        do {
        	if (termino1.charAt(i) != termino2.charAt(i))
        		iguales = false;
            i++;
        }while(iguales &&(i < termino1.length()));
        
        if (i!= termino1.length())
        	i--;
        
        
        if ((i==termino1.length()) && (!iguales))
        	i--;
        
        this.termino= new String("");
        anteriores = i;
        nuevos = termino2.length() - i ;
       
        char nuevoChar;
    	for (int j=i; j < termino2.length(); j++){
    			 nuevoChar = termino2.charAt(j);
    			 termino = termino + nuevoChar;
    			 //k++;
    		}
    	}
		
    //recibe como parametro el string anterior, la cant de carateres
    //anteriores, la cant de carateres nuevos, el string q tiene front coding
    public String descompacto(int carateresAnt, int carateresNew, 
    		String termCompr1, String termCompr2 ){
    	
    	anteriores = carateresAnt;
    	nuevos = carateresNew ;
    	char aux;
    	
    	this.termino= new String("");
    	int i=0;
    	for( i=0; i<anteriores; i++){
    		aux = termCompr1.charAt(i);
    		termino = termino + aux;
    	}
	    for(int j=0; j<nuevos; j++){
	       aux= termCompr2.charAt(j);
	    	termino = termino +aux;
	    	
	    }
	    return termino;
}


	/**
	 * @return the anteriores
	 */
	public int getAnteriores() {
		return anteriores;
	}


	/**
	 * @param anteriores
	 *            the anteriores to set
	 */
	public void setAnteriores(int anteriores) {
		this.anteriores = anteriores;
	}


	/**
	 * @return the nuevos
	 */
	public int getNuevos() {
		return nuevos;
	}


	/**
	 * @param nuevos
	 *            the nuevos to set
	 */
	public void setNuevos(int nuevos) {
		this.nuevos = nuevos;
	}


	/**
	 * @return the termino
	 */
	public String getTermino() {
		return termino;
	}


	/**
	 * @param termino
	 *            the termino to set
	 */
	public void setTermino(String termino) {
		this.termino = termino;
	}
    
      
}
